package com.hlpedu.factory;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * bean工厂作用是：用于生产各个层所需要的对象
 */
public class BeanFactory {
    static Properties prop;
    //读取配置文件config.properties文件
    static{
        try {
            prop=new Properties();
            //读取文件,通过类加载器，得到一个流对象
            InputStream is=BeanFactory.class.getClassLoader()
                    .getResourceAsStream("config.properties");
            //将流对象添加到Properties集合中
            prop.load(is);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
    /**
     * 根据传递的bean的名称，创建bean实例对象
     * @param keyName bean的名称
     * @return 返回bean对象
     */
    public static Object getBean(String keyName){
        Object bean=null;
        try {
            //根据参数keyName,获取properties文件中对应的bean名称的全路径名
            String className=prop.getProperty(keyName);
            //根据类的全路径名构建bean对象
            bean=Class.forName(className).newInstance();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }

        return bean;
    }
}
